Formular-W-9-PDFs mit Power Automate und Smartsheet Generieren

Artikelbild
Autor Von DocuGenerate

24. Juli 2026

Einführung

Formular W-9, „Request for Taxpayer Identification Number and Certification”, ist ein IRS-Formular, mit dem Unternehmen in den USA den rechtlichen Namen, die Adresse und die Steueridentifikationsnummer von Lieferanten, Freelancern und selbstständigen Auftragnehmern erfassen, bevor sie diese bezahlen. Die auf einem W-9 angegebenen Informationen werden später zur Erstellung von 1099-Formularen bei der Steuererklärung verwendet, weshalb korrekte und einheitlich formatierte W-9-Datensätze ein wichtiger Bestandteil jedes Onboarding-Prozesses für Lieferanten sind. Unternehmen, die fortlaufend neue Auftragnehmer aufnehmen, verwalten diese Daten häufig in einer Tabellenkalkulation oder einem Tool wie Smartsheet, was es zu einem natürlichen Kandidaten für die Automatisierung macht.

In diesem Tutorial erstellen wir einen Power Automate-Flow, der eine Smartsheet-Tabelle auf neue Zeilen überwacht und automatisch ein ausgefülltes W-9-PDF mit DocuGenerate generiert. Immer wenn ein neuer Lieferantendatensatz zur Tabelle hinzugefügt wird, sei es durch ein Teammitglied, das ihn direkt einträgt, oder durch einen Import aus einem anderen System, führt der Flow die Daten dieser Zeile mit einer Word-Vorlage zusammen und speichert das fertige PDF in Azure File Storage. Dasselbe Muster gilt für jedes Dokument, das automatisch aus Tabellenkalkulationsdaten generiert werden muss, aber ein Steuerformular ist ein gutes Beispiel, da es eine Mischung aus privaten und geschäftlichen Antragstellern, bedingten Feldern und einem Layout umfasst, das präzise bleiben muss.

Die DocuGenerate-Vorlage Vorbereiten

Der erste Schritt besteht darin, eine Word-Vorlage in DocuGenerate zu erstellen, die das offizielle W-9-Layout nachbildet. Wir sind vom IRS-Formular W-9 ausgegangen und haben jedes ausfüllbare Feld durch ein Zusammenführungs-Tag ersetzt, das wir dann als neue Vorlage mit dem Namen Form W-9 hochgeladen haben.

Form-W-9-Vorlage mit Zusammenführungs-Tags in DocuGenerate

Die Vorlage enthält 17 Zusammenführungs-Tags: firstName, lastName, businessName, taxClassification, exemptPayeeCode, fatcaCode, streetAddress, requesterName, requesterAddress, city, state, zipCode, accountNumber, ssn, ein, signature und signatureDate. Die meisten davon entsprechen direkt einer beschrifteten Box auf dem Formular. taxClassification entspricht der Zeile „Other” im Abschnitt zur föderalen Steuerklassifizierung und enthält eine kurze Beschreibung wie „C Corporation” oder „Trust/estate”, während ssn und ein die beiden Boxen in Part I befüllen, je nachdem, ob der Antragsteller eine Privatperson oder ein Unternehmen ist. Sie können die in diesem Tutorial verwendete Word-Vorlage herunterladen und an Ihr eigenes Layout anpassen.

Die Datenquelle in Smartsheet Einrichten

Sobald die Vorlage steht, besteht der nächste Schritt darin, die Tabelle vorzubereiten, die als Trigger für unseren Flow dient. Klicken Sie in Smartsheet auf Create > Sheet > Table, um eine neue Tabelle zu erstellen, und benennen Sie sie in Form W-9 um. Anstatt Beispielzeilen von Hand einzugeben, importieren wir sie aus einer Excel-Datei, indem wir das Tabellenmenü öffnen und Import auswählen. Beachten Sie, dass der Import alle vorhandenen Daten in der Tabelle durch die Daten aus der Quelldatei ersetzt.

Import von Excel-Daten in die Form-W-9-Tabelle in Smartsheet

Sie können die für diesen Import verwendete Beispiel-Excel-Datei herunterladen. Sie enthält 10 Zeilen, die den 18 Spalten entsprechen, die den Zusammenführungs-Tags in der Vorlage zugeordnet werden: eine Spalte Record ID (REC-001 bis REC-010), gefolgt von jeweils einer Spalte pro Feld des Formulars. Die Daten mischen Privatpersonen und Unternehmen, um die verschiedenen Verzweigungen des Formulars durchzuspielen: sechs Privatpersonen oder Einzelunternehmer mit ausgefüllter SSN und ohne EIN sowie vier Unternehmen (eine LLC, eine C Corp, ein Trust/Nachlass und eine Partnership) mit ausgefüllter EIN und ohne SSN. Eine Zeile hat zudem die Spalten Exempt Payee Code und FATCA Code ausgefüllt, da diese nur in bestimmten Fällen zutreffen.

Form-W-9-Daten importiert in die Smartsheet-Tabelle

Den Power Automate-Flow Erstellen

Sobald Vorlage und Datenquelle bereit sind, können wir den Flow selbst erstellen. Klicken Sie in Power Automate auf New flow > Automated cloud flow. Geben Sie im Dialogfeld Build an automated cloud flow dem Flow einen Namen wie Form W-9, suchen Sie in der Liste der Trigger nach „Smartsheet” und wählen Sie When a new row is created aus.

Auswahl des Smartsheet-Triggers beim Erstellen eines neuen Flows

Der Flow, den wir erstellen, besteht aus drei Schritten: einem Smartsheet-Trigger, der auslöst, wenn eine Zeile hinzugefügt wird, einer DocuGenerate-Aktion, die das PDF generiert, und einer Azure File Storage-Aktion, die es speichert. Konfigurieren wir jeden dieser Schritte der Reihe nach.

Den Smartsheet-Trigger Konfigurieren

Der Trigger When a new row is created benötigt eine Verbindung zu Ihrem Smartsheet-Konto, zu deren Erstellung Power Automate Sie bei der ersten Verwendung auffordert. Legen Sie nach dem Verbinden den Parameter Sheet Id auf die zuvor erstellte Tabelle Form W-9 fest.

Konfiguration des Sheet-Id-Parameters am Smartsheet-Trigger

Die Generate Document-Aktion Hinzufügen

Klicken Sie als Nächstes auf die Schaltfläche + unterhalb des Triggers und suchen Sie nach „DocuGenerate”, um die Liste der verfügbaren Aktionen zu sehen.

Suche nach dem DocuGenerate-Connector in Power Automate

Wählen Sie Generate Document aus. Bei der ersten Verwendung einer DocuGenerate-Aktion in Ihrer Umgebung werden Sie aufgefordert, eine Verbindung herzustellen und dabei Ihren DocuGenerate-API-Schlüssel zu verwenden. Setzen Sie nach dem Verbinden das Feld Template auf die in DocuGenerate erstellte Vorlage Form W-9.

Für das Feld Data benötigen wir ein JSON-Objekt mit den Werten für alle 17 Zusammenführungs-Tags. Der Smartsheet-Trigger stellt die Zellen der Zeile nicht nach Spaltenname zur Verfügung, sondern nur als Array, sodass jeder Wert über seinen numerischen Index referenziert werden muss. Basierend auf der Reihenfolge der Spalten während des Imports ergibt sich folgende Zuordnung: Spalte 0 ist Record ID, Spalte 1 ist SSN, Spalte 2 ist First Name, Spalte 3 ist Last Name, und so weiter bis Spalte 17, die Signature Date ist. Wir haben das JSON mit den Ausdrücken concat und json aufgebaut:

json(concat(
  '{"firstName": "', triggerBody()?.cells?[2]?.value,
  '", "lastName": "', triggerBody()?.cells?[3]?.value,
  '", "businessName": "', triggerBody()?.cells?[4]?.value,
  '", "taxClassification": "', triggerBody()?.cells?[5]?.value,
  '", "exemptPayeeCode": "', triggerBody()?.cells?[6]?.value,
  '", "fatcaCode": "', triggerBody()?.cells?[7]?.value,
  '", "streetAddress": "', triggerBody()?.cells?[8]?.value,
  '", "requesterName": "', triggerBody()?.cells?[9]?.value,
  '", "requesterAddress": "', triggerBody()?.cells?[10]?.value,
  '", "city": "', triggerBody()?.cells?[11]?.value,
  '", "state": "', triggerBody()?.cells?[12]?.value,
  '", "zipCode": "', triggerBody()?.cells?[13]?.value,
  '", "accountNumber": "', triggerBody()?.cells?[14]?.value,
  '", "ssn": "', triggerBody()?.cells?[1]?.value,
  '", "ein": "', triggerBody()?.cells?[15]?.value,
  '", "signature": "', triggerBody()?.cells?[16]?.value,
  '", "signatureDate": "', triggerBody()?.cells?[17]?.value,
  '"}'
))

Die ?-Zeichen sind null-bedingte Operatoren: triggerBody()?.cells?[2]?.value liest die Eigenschaft value der Zelle an Index 2 und gibt null zurück, statt einen Fehler auszulösen, sobald cells oder diese bestimmte Zelle fehlt. Das ist hier wichtig, weil mehrere Spalten, wie businessName oder ssn, in vielen Zeilen absichtlich leer bleiben. Die äußere Funktion concat fügt all diese Werte zu einer einzigen JSON-Zeichenfolge zusammen, und json() wandelt diese Zeichenfolge in das Objekt um, das das Feld Data erwartet.

Konfiguration des Data-Felds an der Generate Document-Aktion

Für das Feld Name haben wir einen Ausdruck verwendet, der prüft, ob die Spalte Business Name (Index 4) ausgefüllt ist, und anhand derselben Indexzuordnung wie oben das passende Namensmuster wählt:

if(
  empty(triggerBody()?.cells?[4]?.value),
  concat('Form W-9 ', triggerBody()?.cells?[2]?.value, ' ', triggerBody()?.cells?[3]?.value),
  concat('Form W-9 ', triggerBody()?.cells?[4]?.value)
)

Dies erzeugt einen Namen wie „Form W-9 John Smith” für eine private Antragstellerin oder einen privaten Antragsteller, oder „Form W-9 Bluepeak Software LLC” für einen geschäftlichen Antragsteller. Belassen Sie das Feld Format abschließend auf dem Standardwert .pdf.

Konfiguration des Name-Felds an der Generate Document-Aktion

Das Dokument in Azure File Storage Speichern

Sobald das Dokument generiert ist, gibt es viele Möglichkeiten, es zuzustellen: per E-Mail versenden, zu SharePoint oder OneDrive hinzufügen, in einen S3-Bucket hochladen und so weiter. In diesem Tutorial speichern wir es in Azure File Storage. Klicken Sie auf die Schaltfläche + unterhalb der Aktion Generate Document, suchen Sie nach „Create file” und wählen Sie die Aktion von Azure File Storage aus.

Hinzufügen der Create-file-Aktion von Azure File Storage

Erstellen Sie eine Verbindung, indem Sie einen Connection name, Ihren Azure Storage account name or file endpoint und Ihren Azure Storage Account Access Key angeben, die beide in Ihrem Speicherkonto im Azure-Portal verfügbar sind.

Erstellen einer Verbindung zu Azure File Storage

Konfigurieren Sie nach dem Herstellen der Verbindung die Aktion Create file:

  • Folder path: /form-w-9, der Zielordner im Speicherkonto.
  • File name: outputs('Generate_Document')?['body/filename'], der Dateiname des generierten PDFs.
  • File content: outputs('Generate_Document')?['body/document_uri'], die URL des generierten PDFs.

Konfiguration der Parameter der Create-file-Aktion

Den Flow Testen

Um den Flow zu testen, klicken Sie auf der Flow-Seite auf Test, wählen Sie Manually und klicken Sie anschließend erneut auf Test. Power Automate zeigt eine Meldung an, die Sie auffordert, eine Zeile zur ausgewählten Tabelle hinzuzufügen, um den Lauf auszulösen.

Manuelles Testen des Flows aus Power Automate

Fügen Sie der Tabelle Form W-9 in Smartsheet eine neue Zeile mit einem frischen Satz Lieferantendetails hinzu. Sobald der Flow läuft, erscheint das generierte Dokument im Bereich Documents der Vorlage Form W-9 in DocuGenerate, und das PDF wird im angegebenen Ordner in Azure File Storage gespeichert. Ein Beispiel des generierten PDFs sehen Sie unten.

Fazit

Dieses Tutorial hat den gesamten Weg von einer Zeile in Smartsheet bis zu einem einreichfertigen W-9-PDF abgedeckt, mithilfe eines Power Automate-Flows ganz ohne benutzerdefinierten Code. Der Trigger erkennt neue Lieferantendatensätze, sobald sie eingetragen werden, die Aktion Generate Document befüllt das offizielle Formularlayout mit den Daten dieser Zeile, und die Aktion Create file liefert das Ergebnis automatisch an Azure File Storage.

Dasselbe dreistufige Muster (Trigger, Generieren, Zustellen) funktioniert für jedes wiederkehrende Dokument, das Ihr Team aus Tabellenkalkulations- oder Tabellendaten erstellt, sei es Onboarding-Papierkram, Rechnungen oder Compliance-Formulare. Da die DocuGenerate-Aktionen in der gesamten Power Platform verfügbar sind, könnten Sie diesen Flow ebenso leicht über ein Power Apps-Formular oder eine SharePoint-Liste statt einer Smartsheet-Zeile auslösen, während Sie dieselbe Konfiguration der Aktion Generate Document beibehalten.

Ressourcen

Diesen Beitrag teilen